package com.ushine.web.template.transactional.facade;

import com.ushine.web.component.exception.ServiceException;
import com.ushine.web.template.transactional.model.FirstTransactionDO;
import com.ushine.web.template.transactional.model.SecondTransactionDO;

/**
 * @Author: yls
 * @Date: 2022/02/21 09:13
 * @Description: 模拟包装层嵌套包装层测试
 * @Version 1.0
 */
public interface ISecondTransactionFacade {
    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param firstTransaction    事务控制实体
     * @param secondTransaction   事务控制实体
     * @param firstTransaction02  事务控制实体
     * @param secondTransaction02 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 11:00
     */
    void insetFirstAndSecond(FirstTransactionDO firstTransaction,
                             FirstTransactionDO firstTransaction02,
                             SecondTransactionDO secondTransaction,
                             SecondTransactionDO secondTransaction02);

    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param firstTransaction    事务控制实体
     * @param secondTransaction   事务控制实体
     * @param firstTransaction02  事务控制实体
     * @param secondTransaction02 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 11:00
     * @throws ServiceException 服务端自定义异常
     */
    void insetFirstAndSecondException(FirstTransactionDO firstTransaction,
                                      FirstTransactionDO firstTransaction02,
                                      SecondTransactionDO secondTransaction,
                                      SecondTransactionDO secondTransaction02) throws ServiceException;

    /**
     * 功能描述:
     * 〈 添加数据 〉
     *
     * @param firstTransaction    事务控制实体
     * @param secondTransaction   事务控制实体
     * @param firstTransaction02  事务控制实体
     * @param secondTransaction02 事务控制实体
     * @return : void
     * @author : yls
     * @date : 2022/2/14 11:00
     * @throws ServiceException 服务端自定义异常
     */
    void insetNestedException(FirstTransactionDO firstTransaction,
                              FirstTransactionDO firstTransaction02,
                              SecondTransactionDO secondTransaction,
                              SecondTransactionDO secondTransaction02) throws ServiceException;
}
